<?php



/*
 * minutes vers reste de minutes sans partie entiere de l'heure
 * @param int nombre de minutes
 * @return int partie entiere de l'heure
 */
function min2Hour($nbMin) {
    if($nbMin < 0)
	$nbMin = -$nbMin;
    return floor($nbMin/60);
}

/*
 * meme chose que min2hour mais en sign�
 * min2HourSign
 * @param int nombre de minutes
 * @return int partie entiere de l'heure
 */
function min2HourSigned($nbMin) {
    if($nbMin < 0)
	return -floor(-$nbMin/60);
    return floor($nbMin/60);
}

/*
 * minutes vers reste de minutes sans partie entiere de l'heure
 * @param int nombre de minutes
 * @return int reste du quotient en minutes
 */
function min2min($nbMin) {
    if($nbMin < 0)
	$nbMin = -$nbMin;
    return $nbMin-60*floor($nbMin/60);
}
/*
 * minutes vers repr�sentation ex 4h30min
 * @pram int nombre de minutes
 * @return string
 */
function min2rep($nbMin) {
    $nbMin < 0 ? $pref = '-' : $pref = '';
    return $pref. min2Hour($nbMin).'h'. rAddZero((int) min2min($nbMin)).'';
}

/**
 * Renvoi le float passé en paramètre enformat H.m
 *
 * @param float $nbMin
 * @return float 
 */
function min2HoursFloat ($nbMin) {
    return $nbMin/60;
}


/*
 * ajoute de ou d' devant une chaine de caractere
 * @param string chaine
 * @return
 * exemple:
 * Damien -> de Damien
 * Anne -> d'Anne
 */
function collePreposition($str) {
    $firstChar = $str[0];
    if(strpos('aeiouyAEIOUY',$firstChar))
	return "d'".$str;
    return "de ".$str;
}


function getListeJours() {
    return array(1 => 'Lundi', 2 => 'Mardi', 3=>'Mercredi',4=>'Jeudi',5=>'Vendredi',6=>'Samedi',0=>'Dimanche');
}

//Renvoie le premier �l�ment d'un tableau
function getFirstEleTab($tab) {
    if( ! is_array($tab) )
	throw new sfException("l'argument n'est pas un tableau");
    if( sizeof($tab)== 0 )
	return null;
    reset($tab);
    $arrPaire = each($tab);
    $ret = $arrPaire['value'];
    reset($tab);
    //print affTab($arrPaire);
    return $ret ;
}

//renvoie la description en html d'un tableau
function affTab( $tab ) {
    reset ( $tab ) ;
    $contenu = "<table>" ;
    while ( list ( $key, $val ) = each ( $tab) ) {
	if(is_array($val))
	    $contenu .= "<tr><td>".$key."</td><td>".affTab($val)."</td></tr>";
	else
	    $contenu .= "<tr><td>".$key."</td><td>".$val."</td></tr>" ;
    }
    $contenu .= "</table>";
    return $contenu;
}

//rajoute un z�ro devant si <10
function rAddZero($vint) {
    $sint = ( string ) $vint;
    if ( strlen($sint) == 1 )
	$sint = '0'.$sint;
    return $sint ;
}

/**
 * a function that produce a link to cross apps
 * @param  $name   string      text of the link made
 * @param  $app    string      the app we want to go to
 * @param  $route  string      the route in the app. Must be valid
 * @param  $args   array       the arguments required by the route.
 Optional
 *
 */
function url_to_cross_app($app, $route, $args=null) {
    
    $host = sfContext::getInstance()->getRequest()->getHost() ;
    $env = sfConfig::get('sf_environment');
    $appRoutingFile =
	realpath(dirname(__FILE__) . "/..") . DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.
	$app.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'routing.yml' ;
    $routeUrl = "";
    if (file_exists($appRoutingFile)) {
	$yml = sfYaml::load($appRoutingFile) ;
	$routeUrl = $yml[$route]['url'] ;
	if ($args) {
	    foreach ($args as $k => $v)
		$routeUrl = str_replace(':'.$k, $v, $routeUrl) ;
	}
	if (strrpos($routeUrl, '*') == strlen($routeUrl)-1)
	    $routeUrl = substr($routeUrl, 0, strlen($routeUrl)-2) ;
    }

    if ($env == 'dev') $path = 'http://' . $host . '/' . $app . '_dev.php' . $routeUrl ;
    elseif ($app != 'frontend') $path = 'http://' . $host . '/'.$app .'.php' . $routeUrl ;
    else $path = 'http://' . $host  . $routeUrl ;

    return $path ;
}
function link_to_cross_app($name, $app, $route, $args=null){
    return "<a href='" . url_to_cross_app($app, $route, $args) . "'>".$name."</a>";
}

/**
 * Permet de générer un lien vers le frontend
 *
 * @param string $libelle
 * @param string $name
 * @param array $parameters
 * @return string 
 */
function link_to_frontend ($libelle, $name, $parameters) {
    return "<a href='" . sfProjectConfiguration::getActive()->generateFrontendUrl($name, $parameters) . "'>".$libelle."</a>";
}

/**
 * Permet de générer un lien vers le backend
 *
 * @param string $libelle
 * @param string $name
 * @param array $parameters
 * @return string
 */
function link_to_backend ($libelle, $name, $parameters) {
    return "<a href='" . sfProjectConfiguration::getActive()->generateBackendUrl($name, $parameters) . "'>".$libelle."</a>";
}